import datetime
from serial_operate import modify_time_forzen
from tools import get_all_meter_addr, get_pc_time, get_before_yesterday_calc, get_yesterday_calc, assert_data, \
    make_collect_err_data, modify_centos_current_date_restart

ip = '192.168.253.113'
com_name = 'com4'

# 1、插入前天、昨天和当天的采集数据,误差数据
print("开始第一步骤")

# 设置站端时间为PC当前时间
modify_centos_current_date_restart(ip)
make_collect_err_data(ip, -2, 3, -1, 3)

# 3、修改站端时间并请求召测
_, pc_datetime = get_pc_time()
list_meter_addr = get_all_meter_addr(ip)
modify_stand_time = pc_datetime.replace(hour=0, minute=13, second=0)
_, collect_time, _, _, _, ratio, angle, _ = modify_time_forzen(ip, com_name, modify_stand_time)

# 4、获取前天的计算数据
sql_ratio_error, sql_angle_error, _ = get_before_yesterday_calc(ip, list_meter_addr[0], modify_stand_time)

# 步骤1检查点 采集数据为数据库中最后一条采集数据，时间为当天0点0分
print("{:.3f}".format(ratio / 1000))
print("{:.3f}".format(sql_ratio_error))

print("{:.3f}".format(angle / 1000))
print("{:.3f}".format(sql_angle_error))

assert_data(3, ratio / 1000, sql_ratio_error)
assert_data(3, angle / 1000, sql_angle_error)
assert collect_time == (modify_stand_time - datetime.timedelta(days=1)).replace(hour=23, minute=0).strftime(
    "%Y-%m-%d %H:%M:%S")

# 步骤二：
# 1、修改站端时间并请求召测
print("开始第二步骤")
modify_stand_time = pc_datetime.replace(hour=1, minute=13, second=0)
_, collect_time, _, _, _, ratio, angle, _ = modify_time_forzen(ip, com_name, modify_stand_time)

# 2、获取昨天的计算数据
sql_ratio_error, sql_angle_error, _ = get_yesterday_calc(ip, list_meter_addr[0], modify_stand_time)

# 步骤2 检查点 采集数据为数据库中最后一条采集数据，时间为当天0点0分
assert_data(3, ratio / 1000, sql_ratio_error)
assert_data(3, angle / 1000, sql_angle_error)
assert collect_time == modify_stand_time.replace(hour=0, minute=0).strftime("%Y-%m-%d %H:%M:%S")

# 步骤三：
# 1、修改站端时间并请求召测
print("开始第三步骤")
modify_stand_time = pc_datetime.replace(hour=2, minute=13, second=0)
_, collect_time, _, _, _, ratio, angle, _ = modify_time_forzen(ip, com_name, modify_stand_time)

# 2、获取昨天的计算数据
sql_ratio_error, sql_angle_error, _ = get_yesterday_calc(ip, list_meter_addr[0], modify_stand_time)

# 步骤2 检查点 采集数据为数据库中最后一条采集数据，时间为当天0点0分
assert_data(3, ratio / 1000, sql_ratio_error)
assert_data(3, angle / 1000, sql_angle_error)
assert collect_time == modify_stand_time.replace(hour=1, minute=0).strftime("%Y-%m-%d %H:%M:%S")
